package cn.lkk.samples.apis;

import java.util.Arrays;

/**
 * java.util.Arrays 的使用演示。
 * 该类包含了一些操作数组的工具方法，例如打印数组、比较数组等。
 */
public class ArraysAPI {
    public static void main(String[] args) {
        copyOf();
    }

    /**
     * 演示Arrays.copyOf()，数组复制
     */
    public static void copyOf() {
        int[] a = {1, 2, 3, 4, 5};
        int[] equal;
        int[] smaller;
        int[] larger;

        equal = Arrays.copyOf(a, a.length);
        smaller = Arrays.copyOf(a, a.length * 2);//复制的长度小于原数组长度时，会被截断
        larger = Arrays.copyOf(a, a.length / 2);//复制的长度大于原数组长度是，会被填充0

        System.out.println(Arrays.toString(equal));
        System.out.println(Arrays.toString(smaller));
        System.out.println(Arrays.toString(larger));
    }

    /**
     * 演示Arrays.toString()，打印数组
     */
    public static void toStrings() {
        int[] a = {1, 2, 3, 4, 5, 6};
        String stringOfArray = Arrays.toString(a);
        System.out.println(stringOfArray);
    }

    /**
     * 演示Arrays.sort()，用于数组排序
     */
    public static void sort() {
        int[] a = {3, 5, 2, 7, 9, 1, 8};
        Arrays.sort(a);
        System.out.println(Arrays.toString(a));
    }

    /**
     * 演示Arrays.fill()，函数填充数组
     */
    public static void fill() {
        int[] a = new int[10];
        System.out.println(Arrays.toString(a));

        //将所有位置填充之后在打印
        Arrays.fill(a, 2);
        System.out.println(Arrays.toString(a));

        //填充部分位置，然后打印
        Arrays.fill(a, 3, 6, 5);
        System.out.println(Arrays.toString(a));
    }

    /**
     * 演示Arrays.equals()函数，用于比较数相等性
     */
    public static void equal() {
        int[] a = {2, 3, 4};
        int[] b = {2, 3, 4};
        int[] c = {2, 3, 5};

        System.out.println(a == b);//false
        System.out.println(Arrays.equals(a, b));//true
        System.out.println(Arrays.equals(a, c));//false
    }
}
